11 - Spatial & Temporal Data

What is the area of Northern Ireland?

SELECT ST_AREA(boundpath)*1406 
    as "Area (km^2)" from political_unit JOIN boundary 
    ON unitname = 'Northern Ireland'
    WHERE political_unit.unitcode = boundary.unitcode;

How close is the computed value to that reported in Wikipedia?

Wikipedia reports 13,843 km2. A finer grid would increase accuracy.

What is the eastern most city in Northern Ireland?

SELECT east.cityname FROM city east JOIN political_unit
    ON east.unitcode = political_unit.unitcode 
    WHERE unitname = 'Northern Ireland' 
    AND NOT EXISTS    
    (SELECT * FROM city other WHERE ST_X(other.cityloc) > ST_X(east.cityloc));

Modify the example geometry database design to include

  • Historic buildings in a city
  • Walking paths in a city
  • Use of the MULTIPOLYGON data type to indicate a political region’s boundary

CREATE TABLE political_unit (
  unitname          VARCHAR(30),
  unitcode          CHAR(2),
  unitpop           DECIMAL(6,2),
  boundaries        MULTIPOLYGON NOT NULL,
      PRIMARY KEY (unitcode));
CREATE TABLE city (
  cityname          VARCHAR(30),
  cityloc           POINT NOT NULL,
  unitcode          CHAR(2),
  historicbuildings MULTIPOINT NULL,
  walkingpaths      MULTILINESTRING NULL,
  PRIMARY KEY (cityname, unitcode),
    CONSTRAINT fk_city_polunit FOREIGN KEY(unitcode) 
       REFERENCES political_unit(unitcode));